Skip to main content

CSS Base

Table of Contents

介绍

CSS(Cascading Style Sheets) 译为层叠样式表, 用以描述 HTML 元素的样式, 布局, 从而控制网页的外观

  • 样式定义: 大小, 形状, 颜色, 字体
  • 布局控制: 元素位置, 间隔, 排列方式
  • 响应式设计: 根据不同设备或用户操作实现自适应布局和样式调整
  • 层叠性: 多个样式同时作用一个元素, 按优先级别进行叠加覆盖
<!-- HTML 元素自带样式  -->
<p style="color: red; font-size: 16px;">HTML 内联 CSS</p>

<!-- HTML 文件共用样式表 -->
<head>
<!-- HTML 内部样式 -->
<style>
p {
color: blue;
font-size: 14px;
}
</style>
</head>

<!-- 引用外部 CSS 样式, href 指向 css 文件路径-->
<head>
<link rel="stylesheet" href="styles.css" />
</head>

基本结构

选择器

修改样式需要使用选择器指定需要修改的 HTML 元素

通用选择器

* 表示选择所有元素, 常用于初始化元素属性, 统一元素属性

/* 清楚元素默认的内外边距 */
* {
margin: 0 auto;
padding: 0;
}

标签选择器

标签选择器即使用 HTML 标签名作为选择器
匹配所有同名的 HTML 元素
权重低, 会被其它选择器覆盖

<head>
<style>
/* 直接使用标签名 */
div {
color: blue;
}
p {
color: red;
font-size: 14px;
}
</style>
</head>

<main>
<div>
<p> content <p>
<div>
</main>

ID 选择器

ID 选择器用以选择带有 id 属性的元素
单个元素只能有一个 id
所有元素的 id 都必须不同

<head>
<style>
/* # 开头表示 ID 选择器 */
#title {
color: blue;
font-size: 14px;
}
</style>
</head>

<main>
<div id="title">
<p> title div <p>
<div>
<div id="content">
<p> content div <p>
<div>
</main>

类选择器

类选择器用以选择带有 class 属性的元素
单个元素可以有多个类名
多个元素可以使用相同的类名

<head>
<style>
/* . 开头表示类选择器 */
.div {
color: blue;
}
.title {
color: red;
}
</style>
</head>

<main>
<div class="div title">
<p> title div <p>
<div>
<div class="div content">
<p> content div <p>
<div>
</main>
/* 类名为 title 的 div 标签 */
div.title {
color: black;
}

后代选择器

/* 后代选择, 具有 main div p 层叠结构的 p 标签 */
main div p {
font-size: 14px;
}

伪类

伪类是一种用于选择元素的特殊关键字, 伪类可以通过状态或位置选择元素

伪类:hover:first-child:nth-child(3):last-child
含义鼠标悬停于元素时父元素的第一个子元素父元素的第 3 个子元素父元素的最后一个子元素
/* 类名为 static 的元素, 静态样式 */
.static {
color: black;
font-size: 14px;
}

/* 当鼠标悬停在元素上, 样式变更 */
.static:hover {
color: red;
font-size: 20px;
}

/* ul 或 ol 下第一个字元素样式 */
li:first-child {
background-color: blue;
}

/* ul 或 ol 下第 2 个字元素样式(序号可以替换) */
li:nth-child(2) {
background-color: green;
}

/* ul 或 ol 下最后一个字元素样式 */
li:last-child {
background-color: yellow;
}

文本属性

font-family:用于指定文字的字体
font-style:用于指定文字的样式, 例如 italic 或 normal

font-size:用于指定文字的大小
font-weight:用于指定文字的粗细程度
color:用于指定文字的颜色
text-shadow: 文字阴影
text-decoration: 文本装饰, none, underline(下划线), line-through(删除线)

text-align:用于指定文字的对齐方式,例如 left、center 或 right
line-height: 行高, 行与行间的距离

水平位置

leftrightcenterjustifyinherit
含义左对齐(默认值)右对齐居中对齐两端对齐继承父元素
p {
text-align: center;
}

盒模型

属性paddingbordermargin
描述内边距(边框和内容距离)边框(边框厚度)外边距(边框与外部距离)

标准盒模型 width, height 指定的是盒子内容大小, 实际占用大小需要加上, 边框, 内边距(不包含外边距)
box_width = width + 2*border + padding-left + padding-right
box_height = height + 2*border + padding-top + padding-bottom

/* 盒子模型 */
.box {
width: 200px;
height: 100px;
background-color: orange;
border: 10px solid deepskyblue;
padding: 20px;
margin: 40px;
}
/* box width = width + 2 * border + 2 * padding = 200px + 2 * 10px + 2 * 20px = 260px */
/* box height = height + 2 * border + 2 * padding = 100px + 2 * 10px + 2 * 20px = 160px */

盒模型 2盒模型

左边通过开发工具显示盒模型详细数据, 右边为正常网页渲染效果

橙色的盒子是内容区(500px * 400px), 蓝色的边框是边框(10px), 棕色内边距占用空间(20px), 最外部粉色的外边距(40px)

定位

居中

属性顺序

布局相关属性:如 display、position、float、top、right、bottom、left 等
盒模型相关属性:如 width、height、padding、margin、border 等
排版相关属性:如 font、text-align、line-height、letter-spacing、word-spacing 等
背景相关属性:如 background-color、background-image、background-size、background-position、background-repeat 等
边框相关属性:如 border、border-radius 等
其他属性:如 color、opacity、box-shadow、transition、animation 等